﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DTO_MechSysWeb;
using BLL_MechSysWeb;
using System.Web.Security;

namespace WEB_MechSysWeb.Paginas_Logado
{
    public partial class ClienteVeiculos : System.Web.UI.Page
    {
        DTOCliente dtoCliente = new DTOCliente();
        DTOVeiculo dtoVeiculo = new DTOVeiculo();
        BLLCliente bllCliente = new BLLCliente();
        BLLVeiculo bllVeiculo = new BLLVeiculo();
        MembershipUser memberShipUser;
        static int veiculoID, clienteID;
        static string userID;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Habilitar(false);
                PreencherDados();
            }

            try
            {
                memberShipUser = Membership.GetUser(User.Identity.Name);
                if (memberShipUser != null)
                {
                    if (Roles.IsUserInRole("Cliente"))
                    {
                        userID = memberShipUser.ProviderUserKey.ToString();
                        clienteID = bllCliente.BuscarClienteIDPorUserID(userID);

                    }
                    if (Roles.IsUserInRole("Administrador"))
                    {

                        Response.Redirect("~/Paginas_Administrador/PaginaPrincipalAdm.aspx");
                    }
                }
                else
                {
                    Response.Redirect("~/Paginas_Publico/PagLogin.aspx");
                }
            }
            catch (Exception)
            {
                Response.Redirect("~/Paginas_Publico/PagLogin.aspx");
            }

        }

        public void PreencherDados()
        {
            try
            {
                memberShipUser = Membership.GetUser();
                userID = memberShipUser.ProviderUserKey.ToString();
                clienteID = bllCliente.BuscarClienteIDPorUserID(userID);
                gridVeiculos.DataSource = bllVeiculo.BuscarVeiculosPorClienteID(clienteID);
                gridVeiculos.DataBind();
            }
            catch (Exception)
            {
                Mensagem.ExibirEmUP("Não foi possível carregar dados!");
            }

        }

        public void LimparCampos()
        {
            txtPlaca.Text = string.Empty;
            txtMarca.Text = string.Empty;
            txtModelo.Text = string.Empty;
            txtAnoFab.Text = string.Empty;
            txtAnoMod.Text = string.Empty;
            clienteID = 0;
            veiculoID = 0;
            userID = null;
        }

        public void Habilitar(bool status)
        {
            txtPlaca.Enabled = status;
            txtMarca.Enabled = status;
            txtMarca.Enabled = status;
            txtModelo.Enabled = status;
            txtAnoFab.Enabled = status;
            txtAnoMod.Enabled = status;

            btnNovo.Enabled = !status;
            btnEditar.Enabled = !status;
            btnCancelar.Enabled = status;
            btnSalvar.Enabled = status;
            btnExcluir.Enabled = status;

            if (status == true)
            {
                btnNovo.ForeColor = System.Drawing.Color.Black;
                btnEditar.ForeColor = System.Drawing.Color.Black;
                btnCancelar.ForeColor = System.Drawing.Color.White;
                btnSalvar.ForeColor = System.Drawing.Color.White;
                btnExcluir.ForeColor = System.Drawing.Color.White;
            }
            if (status == false)
            {
                btnNovo.ForeColor = System.Drawing.Color.White;
                btnEditar.ForeColor = System.Drawing.Color.White;
                btnCancelar.ForeColor = System.Drawing.Color.Black;
                btnSalvar.ForeColor = System.Drawing.Color.Black;
                btnExcluir.ForeColor = System.Drawing.Color.Black;
            }

        }

        protected void btnNovo_Click(object sender, EventArgs e)
        {
            Habilitar(true);
            LimparCampos();
        }

        protected void btnEditar_Click(object sender, EventArgs e)
        {
            if (txtPlaca.Text != "")
            {
                Habilitar(true);
            }
            else
            {
                Mensagem.ExibirEmUP("Selecione um veículo para editar!");
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Habilitar(false);
            LimparCampos();
        }

        protected void btnExcluir_Click(object sender, EventArgs e)
        {
            if (veiculoID != 0)
            {
                try
                {
                    bllVeiculo.Excluir(veiculoID);
                    Habilitar(false);
                    LimparCampos();
                    PreencherDados();
                }
                catch
                {
                    Mensagem.ExibirEmUP("Veículo excluído com sucesso!");
                }
            }
            else
            {
                Mensagem.ExibirEmUP("Selecione um veículo para excluir!");

            }
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            if (bllVeiculo.VerificaSeVeiculoIDExiste(veiculoID) == false)
            {
                try
                {
                    dtoVeiculo.VeiculoID = veiculoID;
                    dtoVeiculo.ClienteID = clienteID;
                    dtoVeiculo.Placa = txtPlaca.Text.ToUpper();
                    dtoVeiculo.Marca = txtMarca.Text;
                    dtoVeiculo.Modelo = txtModelo.Text;
                    dtoVeiculo.AnoFab = Int32.Parse(txtAnoFab.Text);
                    dtoVeiculo.AnoMod = Int32.Parse(txtAnoMod.Text);

                    bllVeiculo.Inserir(dtoVeiculo);
                    Mensagem.ExibirEmUP("Veículo cadastrado com sucesso!");
                    LimparCampos();
                    Habilitar(false);
                    PreencherDados();
                }
                catch (Exception)
                {
                    Mensagem.ExibirEmUP("Não foi possível cadastrar o veículo!");
                }
            }
            else
            {
                Atualizar();
            }
        }

        public void Atualizar()
        {
            if (veiculoID != 0)
            {
                try
                {
                    dtoVeiculo.VeiculoID = veiculoID;
                    dtoVeiculo.ClienteID = clienteID;
                    dtoVeiculo.Placa = txtPlaca.Text.ToUpper();
                    dtoVeiculo.Marca = txtMarca.Text;
                    dtoVeiculo.Modelo = txtModelo.Text;
                    dtoVeiculo.AnoFab = Int32.Parse(txtAnoFab.Text);
                    dtoVeiculo.AnoMod = Int32.Parse(txtAnoMod.Text);

                    bllVeiculo.Atualizar(dtoVeiculo);
                    Mensagem.ExibirEmUP("Veículo atualizado com sucesso!");
                    LimparCampos();
                    Habilitar(false);
                    PreencherDados();
                }
                catch (Exception)
                {
                    Mensagem.ExibirEmUP("Não foi possível atualizar o veículo!");
                }
            }
        }

        protected void gridVeiculos_SelectedIndexChanged1(object sender, EventArgs e)
        {
            btnExcluir.Enabled = true;
            veiculoID = Convert.ToInt32(gridVeiculos.SelectedValue.ToString());
            dtoVeiculo = bllVeiculo.BuscarVeiculoPorVeiculoID(veiculoID);

            txtPlaca.Text = string.Format("{0}-{1}", dtoVeiculo.Placa.Substring(0, 3).ToUpper(), dtoVeiculo.Placa.Substring(3, 5));
            txtMarca.Text = dtoVeiculo.Marca;
            txtModelo.Text = dtoVeiculo.Modelo;
            txtAnoFab.Text = dtoVeiculo.AnoFab.ToString();
            txtAnoMod.Text = dtoVeiculo.AnoMod.ToString();
        }
    }
}